package com.ilearn.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;


/**
 *
 * 代理XieMu类的方法，调用代理类的内容
 *
 */
public class JDK58 implements InvocationHandler {

    private Person target;

    public Object getInstance(XieMu target) throws Exception{
        this.target = target;

        Class<? extends XieMu> aClass = target.getClass();

        // 1.Proxy这个类用来生成一个新的对象（采用字节码重组来实现）
        // 2.有一个Invocation的参数
        return Proxy.newProxyInstance(aClass.getClassLoader(), aClass.getInterfaces(), this);
    }


    /**
     *
     * @param proxy 代理类
     * @param method
     * @param args
     * @return
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("我是媒婆，我要给你找对象，现在已经拿到你的需求");
        System.out.println("开始物色");

        method.invoke(this.target, args);

        System.out.println("如果合适的话，就办事");
        return null;
    }
}
